<?php
// +----------------------------------------------------------------------
// | Bwsaas
// +----------------------------------------------------------------------
// | Copyright (c) 2015~2023 http://www.buwangyun.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Gitee ( https://gitee.com/buwangyun/bwsaas )
// +----------------------------------------------------------------------
// | Author: buwangyun <hnlg666@163.com>
// +----------------------------------------------------------------------
// | Date: 2023-06-25 10:55:00
// +----------------------------------------------------------------------

use think\migration\Migrator;
use think\migration\db\Column;

class WechatAuthInfo extends Migrator
{
    /**
     * Change Method.
     *
     * Write your reversible migrations using this method.
     *
     * More information on writing migrations is available here:
     * http://docs.phinx.org/en/latest/migrations.html#the-abstractmigration-class
     *
     * The following commands can be used in this method and Phinx will
     * automatically reverse them when rolling back:
     *
     *    createTable
     *    renameTable
     *    addColumn
     *    renameColumn
     *    addIndex
     *    addForeignKey
     *
     * Remember to call "create()" or "update()" and NOT "save()" when working
     * with the Table class.
     */
    public function change()
    {
        $table  =  $this->table('wechat_auth_info',['engine'=>'Innodb', 'comment' => '小程序认证表', 'signed' => false]);
        //迁移工具会为每个表自动创建一个自增的主键字段 id
        $table->addColumn('member_miniapp_id', 'integer', ['comment'=>'应用id','limit'=>11,'default'=>0])
            ->addColumn('customer_type', 'tinyinteger', ['comment'=>'企业为1，个体工商户 为12，个人是15','limit'=>2,'default'=>0])
            ->addColumn('email', 'string',['comment'=>'认证联系人邮箱','limit'=>64,'default'=>''])
            ->addColumn('name', 'string',['comment'=>'认证联系人姓名','limit'=>64,'default'=>''])
            ->addColumn('mobile', 'string',['comment'=>'认证联系人手机号','limit'=>64,'default'=>''])
            ->addColumn('invoice_type', 'tinyinteger', ['comment'=>'发票类型 1: 不开发票 2: 电子发票','limit'=>2,'default'=>0])
            ->addColumn('invoice_id', 'string',['comment'=>'纳税识别号（15位、17、18或20位）','limit'=>64,'default'=>''])
            ->addColumn('invoice_desc', 'string',['comment'=>'发票备注（选填）','limit'=>64,'default'=>''])
            ->addColumn('qualification', 'string',['comment'=>'主体资质材料media_id','limit'=>128,'default'=>''])
            ->addColumn('qualification_other', 'string',['comment'=>'体资质其他证明材料media_id','limit'=>1024,'default'=>''])
            ->addColumn('account_name', 'string',['comment'=>'小程序账号名称','limit'=>64,'default'=>''])
            ->addColumn('account_name_type', 'tinyinteger', ['comment'=>'小程序账号名称命名类型 1：基于自选词汇命名 2：基于商标命名','limit'=>2,'default'=>0])
            ->addColumn('account_supplemental', 'string',['comment'=>'名称命中关键词-补充材料media_id','limit'=>1024,'default'=>''])
            ->addColumn('pay_type', 'tinyinteger', ['comment'=>'支付方式 1：消耗服务商预购包 2：小程序开发者自行支付','limit'=>2,'default'=>0])
            ->addColumn('auth_identification', 'string',['comment'=>'认证类型为个人类型时可以选择要认证的身份','limit'=>64,'default'=>''])
            ->addColumn('auth_ident_material', 'string',['comment'=>'填了auth_identification则必填。身份证明材料 media_id','limit'=>1024,'default'=>''])
            ->addColumn('third_party_phone', 'string',['comment'=>'第三方联系电话','limit'=>64,'default'=>''])
            ->addColumn('service_appid', 'string',['comment'=>'选择服务商代缴模式时必填。服务市场appid','limit'=>64,'default'=>''])
            ->addColumn('create_time', 'integer', ['comment'=>'创建时间','limit'=>11,'default'=>0])
            ->addColumn('update_time', 'integer', ['comment'=>'修改时间','limit'=>12,'default'=>0])
            ->addColumn('taskid', 'string',['comment'=>'认证任务id，打回重审调用reauth时为必填','limit'=>64,'default'=>''])
            ->addColumn('auth_url', 'string',['comment'=>'小程序管理员授权链接','limit'=>1024,'default'=>''])
            ->addColumn('appid', 'string',['comment'=>'小程序id','limit'=>64,'default'=>''])
            ->addColumn('task_status', 'tinyinteger', ['comment'=>'当前任务流程的状态码：0: 初始状态；1: 任务超时, 24小时内有效；2: 用户授权拒绝；3: 用户授权同意；4: 发起人脸流程；5: 人脸认证失败；6: 人脸认证ok；7: 人脸认证后，已经提交手机号码下发验证码；8: 手机验证失败；9: 手机验证成功；11: 创建认证审核单失败；12: 创建认证审核审核单成功；14: 验证失败；15: 等待支付','limit'=>2,'default'=>0])
            ->addColumn('apply_status', 'tinyinteger', ['comment'=>'审核单状态，创建认证审核审核单成功后该值有效。0：审核单不存在；1：待支付；2：审核中；3：打回重填；4：认证通过；5：认证最终失败（不能再修改）','limit'=>2,'default'=>0])
            ->addColumn('message', 'string',['comment'=>'提示信息','limit'=>1024,'default'=>''])
            ->addColumn('notify_info', 'text', ['comment'=>'回调事件信息','default'=>null])
            ->addColumn('auth_status', 'tinyinteger', ['comment'=>'认证状态-用于前端拦截:1=审核中,2=认证成功,3=认证失败(打回重填),4=认证失败(认证最终失败,不能再修改)','limit'=>2,'default'=>0])

            //普通索引
            ->addIndex(['customer_type'], ['unique' => false])
            ->addIndex(['create_time'], ['unique' => false])
            ->addIndex(['name'], ['unique' => false])
            ->addIndex(['taskid'], ['unique' => false])
            //创建表
            ->create();
    }
}
